/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.upc.sigu.modelo.daoImpl;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.stereotype.Service;
import pe.edu.upc.sigu.entities.AlumnoCursoSeccion;
import pe.edu.upc.sigu.entities.Alumnos;
import pe.edu.upc.sigu.entities.Carreras;
import pe.edu.upc.sigu.entities.Cursos;
import pe.edu.upc.sigu.entities.NotasAlumnoCurso;
import pe.edu.upc.sigu.entities.Periodos;
import pe.edu.upc.sigu.entities.Personal;
import pe.edu.upc.sigu.entities.Seccion;
import pe.edu.upc.sigu.modelo.dao.AlumnoCursoSecccionDao;

/**
 *
 * @author Usuario2
 */
@Service(value = "alumnoCursoSecccionDao")
public class AlumnoCursoSecccionDaoImpl implements AlumnoCursoSecccionDao {

    private EntityManager entityManager = null;

    @PersistenceContext
    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }

    @Override
    public List<Cursos> getCurosList(Periodos periodo, Alumnos alumno) {
        String sql = "SELECT  a.cursos FROM AlumnoCursoSeccion a "
                + "WHERE a.alumnos=:alumno AND a.alumnoCursoSeccionPK.periodo = :periodo";
        Query query = entityManager.createQuery(sql);
        query.setParameter("alumno", alumno);
        query.setParameter("periodo", periodo.getPeriodosPK().getPeriodo());
        return query.getResultList();
    }

    @Override
    public List getAlumnnosNotas(Periodos periodo, Carreras carrera, Seccion seccion, Cursos curso) {

        String sql = "SELECT  a FROM AlumnoCursoSeccion a "
                + "WHERE a.alumnoCursoSeccionPK.periodo = :periodo "
                + " AND a.carreras =:carreras "
                + " AND a.seccion =:seccion "
                + " AND a.cursos =:curso";
        Query query = entityManager.createQuery(sql);
        query.setParameter("periodo", periodo.getPeriodosPK().getPeriodo());
        query.setParameter("carreras", carrera);
        query.setParameter("seccion", seccion);
        query.setParameter("curso", curso);
        List listResult = query.getResultList();
        // Alumnos bean  = (Alumnos) listResult.get(0) ;
        //System.out.println(" beannnnnn :"+bean.getAlumnosPK().getAlumno());
        return listResult;

    }

    @Override
    public List getAlumnnosNotas2(Periodos periodos, Alumnos alumno, Cursos curso) {
        System.out.println("metodo : getAlumnnosNotas2");
        String sql = "SELECT DISTINCT a.alumnoCursoSeccion FROM NotasAlumnoCurso a JOIN a.alumnoCursoSeccion b "
                + "WHERE b.alumnoCursoSeccionPK.periodo = :periodo "
                + " AND b.alumnos =:alumno ";
                //+ " AND a.nota < 0";
        
        /*String sql = "SELECT  a FROM AlumnoCursoSeccion a JOIN a.NotasAlumnoCurso b "
                + "WHERE a.alumnoCursoSeccionPK.periodo = :periodo "
                + " AND a.alumnos =:alumno "
                + " AND b.nota = :nota";*/
                

        if (curso != null) {
            sql = sql + " AND b.cursos =:curso";
        }
        Query query = entityManager.createQuery(sql);
    
        query.setParameter("periodo", periodos.getPeriodosPK().getPeriodo());
        query.setParameter("alumno", alumno);
        //query.setParameter("nota", -1);
        if (curso != null) {
            query.setParameter("curso", curso);
        }

        List listResult = query.getResultList();
        return listResult;
    }
}
